package com.example.stlink.activitys;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.Gravity;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.stlink.R;
import com.example.stlink.model.constants.ModelFieldConstants;
import com.example.stlink.utils.CommonUtils;

/**
 * 登录身份选择
 */
public class IdChooseActivity extends AppCompatActivity {

    private Boolean isExit = false; // 定义一个变量，来标识是否退出
    Handler mHandler; // 3秒内连续点击两个退出键返回

    private Button stuLoginCho;
    private Button teaLoginCho;

    private Bundle bundle;
    private Intent intentIdCho;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_identity_choose);

        initView();

        // 消息延时处理，将退出标志设置未为false
        mHandler = new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                isExit = false;
            }
        };
    }

    /**
     * 初始化布局
     */
    public void initView(){
        //修改状态栏字体颜色
        CommonUtils.changeStatusBar(this);

        stuLoginCho = findViewById(R.id.login_b_stu);
        teaLoginCho = findViewById(R.id.login_b_tea);

        bundle = new Bundle();

        setOnclickListener();
    }

    /**
     * 设置按钮点击监听事件
     */
    public void setOnclickListener(){
        // 选择学生端登录
        stuLoginCho.setOnClickListener(v -> {
            intentIdCho = new Intent(IdChooseActivity.this, LoginActivity.class);
            bundle.putInt(ModelFieldConstants.ROLE_ID, 0);
            intentIdCho.putExtras(bundle);
            startActivity(intentIdCho);
        });

        // 选择教师端登录
        teaLoginCho.setOnClickListener(v -> {
            intentIdCho = new Intent(IdChooseActivity.this, LoginActivity.class);
            bundle.putInt(ModelFieldConstants.ROLE_ID, 1);
            intentIdCho.putExtras(bundle);
            startActivity(intentIdCho);
        });
    }


    /**
     * 1、当按下BACK键时，会被onKeyDown捕获，判断是BACK键，则执行exit方法。
     * @param keyCode 自定义的标识
     * @param event 用户事件
     * @return 是否点击系统返回键
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            exit();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 2、在exit方法中，会首先判断isExit的值，如果为false的话，则置为true，
     *  同时会弹出提示，并在3000毫秒（3秒）后发出一个消息，在Handler中将此值还原成false。
     *  如果在发送消息间隔的2秒内，再次按了BACK键，则再次执行exit方法，此时isExit的值已
     *  为true，则会执行退出的方法。
     */
    public void exit(){
        if (!isExit) {
            isExit = true;
            Toast toast = Toast.makeText(getApplicationContext(),"再按一次退出程序",Toast.LENGTH_SHORT);
            toast.show();
            toast.setGravity(Gravity.CENTER, 0, 0);
            //利用handler延迟发送更改状态信息，3000==3
            mHandler.sendEmptyMessageDelayed(0, 3000);
        } else {
            //在后台运行程序，不退出程序，只返回桌面
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            startActivity(intent);
        }
    }
}
